home *** CD-ROM | disk | FTP | other *** search
/ The Games Machine 76 / XENIATGM66.iso / Indiana Jones / Indiana Jones.exe / RESOURCE / PREVIEW.GOB / cog_weap_grenade.cog < prev    next >
Text File  |  1999-11-15  |  4KB  |  192 lines

  1. # Jones 3D Cog Script
  2. #
  3. # weap_Grenade.cog
  4. #
  5. # This COG controls Indy's grenades.  Longer you hold down the fire
  6. # key, further they go.
  7. #
  8. # [RandyT]
  9. #
  10. # (C) 1998 LucasArts Entertainment Company LLC. All Rights Reserved
  11. #
  12. # ===================================================================
  13.  
  14. symbols
  15.  
  16. message        startup
  17. message        fire
  18. message        activated
  19. message        deactivated
  20. message        selected
  21. message        deselected
  22. message        blocked
  23. message        callback
  24.  
  25. sound        pull=gen_grenade_pull.wav    local    # Autoloaded
  26. sound        put=gen_grenade_put.wav        local    # Autoloaded
  27. sound        throw=gen_grenade_fire.wav    local    # Autoloaded
  28.             
  29. template    projectile=+grenade            local    # Autoloaded
  30.             
  31. thing        player                        local
  32.  
  33. flex        holdDownTime                local
  34.             
  35. int            handNode                    local
  36. int            weaponNum=11                local
  37. int            callNum                        local
  38.  
  39. int            bThrown=0                    local
  40. int            bBlocked=0                    local
  41.  
  42. vector        firePos                        local
  43.  
  44. end
  45.  
  46. # ===================================================================
  47.  
  48. code
  49.  
  50. startup:
  51.  
  52.     player = GetLocalPlayerThing();
  53.     handNode = GetNodeByName(player, "inrhand");
  54.  
  55.     return;
  56.  
  57. # -------------------------------------------------------------------
  58.  
  59. fire:
  60.  
  61.     if (GetParam(0) != -1) return;
  62.  
  63.     # Throw it already!
  64.     firePos = GetThingJointPos(player, handNode);
  65.  
  66.     FireProjectile(player, projectile, -1, -1, firePos, '0 0 0', holdDownTime, 0x001, 0.0, 0.0);
  67.  
  68.     # Lose a grenade...
  69.     ChangeInv(player, weaponNum, -1.0);
  70.     bThrown = 1;
  71.  
  72.     DeselectWeapon(player);
  73.     ResetWeaponModel(player);
  74.  
  75.     return;
  76.  
  77. # -------------------------------------------------------------------
  78.  
  79. activated:
  80.  
  81.     PlayMode(player, 63, 0);
  82.     StopMode(player, 62, 0);
  83.  
  84.     ActivateWeapon(player, 0.01);
  85.  
  86.     return;
  87.  
  88. # -------------------------------------------------------------------
  89.  
  90. deactivated:
  91.  
  92.     SetFireWait(player, 1.4);
  93.  
  94.     holdDownTime = DeactivateWeapon(player);
  95.  
  96.     # Max scale is 2.0
  97.     if (holdDownTime > 2.0) holdDownTime = 2.0;
  98.  
  99.     # Min scale is 0.25
  100.     else if (holdDownTime < 0.25) holdDownTime = 0.25;
  101.  
  102.     if (!bBlocked)
  103.     {
  104.         # Play the throw anim...
  105.         CaptureThing(player);
  106.         PlayMode(player, 65, 0);
  107.         PlaySoundThing(throw, player, 1, -1, -1, 0x880);
  108.         StopMode(player, 63, 0.5);
  109.     }
  110.  
  111.     return;
  112.  
  113. # -------------------------------------------------------------------
  114.  
  115. selected:
  116.  
  117.     bBlocked = 0;
  118.  
  119.     SetAimWait(player, 0);
  120.     SetMountWait(player, 0.67);
  121.  
  122.     SetArmedMode(player, 6);
  123.     SetCurWeapon(player, weaponNum);
  124.     SetThingFireOffset(player, '0.006 0.05 0.015'); 
  125.  
  126.     CaptureThing(player);
  127.     PlayMode(player, 62, 0);
  128.  
  129.     return;
  130.  
  131. # -------------------------------------------------------------------
  132.  
  133. deselected:
  134.  
  135.     SetMountWait(player, 1.0);
  136.  
  137.     StopMode(player, 63, 0.5);
  138.     StopMode(player, 62, 0.5);
  139.  
  140.     # No "put" anim if Indy threw the grenade...
  141.     if (bThrown)
  142.     {
  143.         bThrown = 0;
  144.         SetArmedMode(player, 0);
  145.  
  146.         # Make sure Indy's not out of ammo
  147.         if (GetInv(player, weaponNum) < 1)
  148.         {
  149.             PlayVoiceMode(player, 123);
  150.             SelectWeaponWait(player, 3);
  151.         }
  152.  
  153.         return;
  154.     }
  155.  
  156.     CaptureThing(player);
  157.     PlayMode(player, 64, 0);
  158.  
  159.     SetArmedMode(player, 0);
  160.  
  161.     return;
  162.  
  163. # -------------------------------------------------------------------
  164.  
  165. blocked:
  166.  
  167.     # Blocked = another cog deselected the weapon while fire key was still down
  168.     bBlocked = 1;
  169.     return;
  170.  
  171. # -------------------------------------------------------------------
  172.  
  173. callback:
  174.  
  175.     callNum = GetParam(1);
  176.     ReleaseThing(player);
  177.  
  178.     if (callNum == 28)
  179.     {
  180.         PlaySoundThing(pull, player, 1, -1, -1, 0x880);
  181.         SetWeaponModel(player, weaponNum);
  182.     }
  183.     else if (callNum == 29)
  184.     {
  185.         PlaySoundThing(put, player, 1, -1, -1, 0x880);
  186.         ResetWeaponModel(player);    
  187.     }
  188.  
  189.     return;
  190.  
  191. end
  192.